A virtual machine is software that is executed on hardware to create a virtualization of a physical computer system. Virtual machines may function as self-contained platforms that run their own operating systems and software applications.
A host machine may concurrently run one or more virtual machines using software that is referred to as a hypervisor. The hypervisor allocates a certain amount of the host machine's resources, such as the host machine's underlying physical processors and memory devices, to each of the virtual machines. This allocating by the hypervisor allows guests of the virtual machines to transparently access the host machine's resources.
Guest applications, including guest operating systems, may be executed on the allocated resources of each virtual machine. Local or remote clients may access these guest applications to perform computing tasks. In some instances, virtual machines and guest applications may be implemented to provide cloud computing environments.
Memory of a host machine and virtual machines running on the host machine is typically divided into memory pages. In some host machines, the hypervisor reduces physical memory consumption by using memory deduplication techniques to reduce the amount of memory pages that store the same data.
Traditionally, memory deduplication is performed by the hypervisor scanning memory pages assigned to virtual machines to identify memory pages that store the same content. The hypervisor consolidates memory pages that store the same content into a single memory page, thereby reducing the amount of memory resources used by the virtual machines.
Examples of the present disclosure and their advantages are best understood by referring to the detailed description that follows.